import Vue from 'vue'
import Vuex from 'vuex'
import Axios from 'axios'
Vue.use(Vuex)

export default new Vuex.Store({
  
  state: {
    list:[],//存储总数据
    cartList:[]//存储所有加入购物车数据
  },

  mutations: {//用来直接修改state, 同步操作(action)
    addToCart(state, item) { //加入购物车

      //商品对象如果是初次加入购物车,数量为1,否则数量加1
      //判断商品是否重复加入
      var findItem = state.cartList.find((i) => { return i.id === item.id });
      if (findItem) //重复加入
      {
        findItem.count++;
      }
      else//初次加入
      {
        //item.count = 1; 不能用 直接赋值的方式 添加属性
        Vue.set(item, 'count', 1);
        state.cartList.push(item);
      }

      console.log(state.cartList);
      
    },
    add_count(state,id) {//数量加1
      var findItem = state.cartList.find((i) => { return i.id === id });
      if (findItem)//找到了需要加1的商品
      {
        findItem.count++;
      }
    },
    sub_count(state,id) {//数量减1
      var findItem = state.cartList.find((i) => { return i.id === id });
      if (findItem && findItem.count > 1)//找到了需要减1的商品
      {
        findItem.count--;
      }
      else if (findItem.count === 1)// 从购物车移除商品
      {
        //查找需要删除的商品在 购物车列表中的索引
        var findIndex = state.cartList.findIndex((i) => { return i.id === id });
        //从购物车列表中删除
        state.cartList.splice(findIndex, 1);
      }
    },
    save_list(state,list) {//保存总数据
      state.list = list;
    }
  },

  actions: {//用来间接修改state,异步操作(action)
    request_data({commit}) {
      Axios.get('http://yantianfeng.com/api/goodList').then((res) => {
        //触发一个同步action  间接修改state
        commit('save_list', res.data.goodList);
      });
    }
  },
  modules: {
  }
})
